Streaming serial data has myriad applications in the modern world. Streaming serial data applications typically transfer large amounts of information in a continuous serial stream of data bits. Millions of data bits can be transferred across a continuously streaming serial data link, with a corresponding data bit accompanying every active edge of a continuously running serial data clock. Under these conditions, if the continuously streaming serial data link experiences a disturbance such as a noise event, then one cycle of the serial data clock can appear to the receiver to be two cycles of the serial data clock. This causes an erroneous data shift of the incoming serial data at the receiver. This type of error will prevent the receiver from correctly reading any of the subsequent data bits in the continuous serial data stream until the data stream can be re-synchronized to the serial data clock.
Due to the continuous nature of the streaming serial data, with every bit at every active clock edge carrying needed information, there is no time available for effective utilization of a conventional start bit for synchronization.
In general, there are two known synchronization approaches that can be applied to serial streaming data applications. One such approach utilizes so-called data transparent methods. Data transparent methods treat all data alike, with no timing dependencies. Because all data is treated alike, data transparent methods have relatively wide applicability in highly varied application environments. One conventional data transparent method uses the source clock directly, so errors “self heal” on the host side as the receiver realigns to the clock again rather quickly. Many data transparent methods use high overhead coding to create unique code words for synchronization. One limitation of some high overhead coding applications is a property referred to as error propagation. If a single random bit error occurs in the coded stream, it will cause many bits to be received in error before synchronization can be re-established.
The other known approach for synchronizing serial data streaming applications uses application dependent methods. Such methods utilize known features and characteristics of the transmitted data, such as features within the clocking or gating of the data. These methods require very little overhead, but can have limited applicability in non-standard, custom applications.
If a wide range of applications is desired, then a data transparent method would appear to be preferable to an application dependent method. However, as mentioned above, some data transparent methods have a relatively high overhead cost due to data expansion. In the case of conventional 4b/5b and 8b/10b codes, the data expands by twenty percent (20%), thus reducing the throughput of the link from the very start.